1. Field of the Invention
The invention relates generally to the field of digital data processing systems.
2. Description of the Prior Art
A typical digital data processing system includes three basic elements, namely a processor element, a memory element, and an input/output element. The memory element stores information in addressable storage locations. This information includes both data and instructions for processing the data. The processor element includes one or more digital data processing units, or "processors", each of which causes information to be transferred, or fetched, to it from the memory element, interprets the incoming information as either instructions or data, and processes the data in accordance with the instructions. The results are then stored in addressed locations in the memory element.
The input/output element also communicates with the memory element in order to transfer information into the system and to obtain the processed data from it. Units comprising the input/output element normally operate in accordance with control information supplied to it by the processor element. The control information defines the operation to be performed by the input/output unit. At least one class of operations performed by an input/output unit is the transfer of user information, that is, information used by a user program, between the input/output unit and the memory element. Typical units comprising the input/output element include, for example, printers, teletypewriters, and video display terminals, and may also include secondary information storage devices such as disk or tape storage units.
In addition to functioning as input/output devices, disk storage units and, sometimes, tape storage units may also function as part of the memory element. In particular, a memory element typically includes a main memory, whose contents are accessible to the processor relatively quickly but which is generally relatively high-cost storage. Modern main memories are typically implemented using MOS or bipolar semiconductor technology and may provide on the order of a fraction of a megabyte to several tens of megabytes of storage.
In modern data processing systems, it is typical to have one or, if the system is a multiprocessor system, several processing units which can execute all of the instructions that are available in the system. However, in executing several types of instructions, most notably instructions which perform arithmetic on floating point numbers which are comprised of two distinct parts, one representing a fraction and the other representing an exponent, it is common to provide a co-processor to perform the operation.
Floating point numbers are comprised of two distinct parts, namely the fraction and the exponent. Typically, each part must be processed separately, but at the beginning and/or end of processing operations must be performed on the parts, such as shifting and normalization, which depends on the values of the other parts. This complicated processing requires a significant amount of time in a general purpose processor. Accordingly, a co-processor, termed a floating point processor, is provided which includes circuits that are optimized to execute the instruction quickly.
In prior systems, the floating point processor, although essentially an option, could be connected into the main processor, and use the main processor's circuits to retrieve the data to be processed. This was a satisfactory solution prior to the advent of microprocessors. However, if the main processor is a microprocessor, the numbers of pins allowing connection of the microprocessor to the other circuits, including the floating point processor, is quite limited. Accordingly, a large number of connections just devoted to the floating point processor is not possible.
Another interconnection mechanism which has been used is to allow the floating point processor to monitor system activity and note when the microprocessor is retrieving an instruction for processing floating point data. If such an instruction is received, the floating point processor disables the microprocessor, decodes the instruction, retrieves the required data, executes the instruction and stores the processed data. However, this requires the floating point processor to be able to identify when an instruction is being retrieved and to have extensive interface circuitry and decoding circuitry to identify the data to be processed. In addition, if the microprocessor prefetches instructions, the microprocessor and floating point processor would have to coordinate, since the floating point instruction would not be processed immediately upon being received, but only after the instructions ahead of it have been processed. Also, if the program branches before the instruction has been reached, the instruction would never be executed.